#pragma once
#include "DXAMLCommon.h"

#include "IPALUri.h"
#include "INameScope.h"
#include "XamlQualifiedObject.h"
#include "ObjectWriterCallbacksDelegate.h"

class ObjectWriterSettings
{
private: 
	xshared_ptr<ObjectWriterCallbacksDelegate> m_spObjectWriterCallbacks;
	xshared_ptr<XamlQualifiedObject> m_qoRootObjectInstance;
	xshared_ptr<XamlQualifiedObject> m_qoEventRoot;
	xref_ptr<INameScope> m_spNameScope;
	xref_ptr<IPALUri> m_spBaseUri;
	xref_ptr<IPALUri> m_spXamlResourceUri;

	XBOOL m_fIgnoreCanConvert;
	XBOOL m_bAllowEvents;
	XBOOL m_bExpandTemplates;

public: 
	ObjectWriterSettings();
	void set_ObjectWriterCallbacks(const xshared_ptr<ObjectWriterCallbacksDelegate> & spObjectWriterCallbacks);
	void get_ObjectWriterCallbacks(xshared_ptr<ObjectWriterCallbacksDelegate> & rspObjectWriterCallbacks);

	void set_RootObjectInstance(const xshared_ptr<XamlQualifiedObject> & qoRootObjectInstance);
	void get_RootObjectInstance(xshared_ptr<XamlQualifiedObject> & rqoRootObjectInstance);

	void set_EventRoot(const xshared_ptr<XamlQualifiedObject> & qoEventRoot);
	void get_EventRoot(xshared_ptr<XamlQualifiedObject> & qoEventRoot);

	void set_IgnoreCanConvert(XBOOL bValue);
	XBOOL get_IgnoreCanConvert() const;

	void set_AllowEvents(XBOOL bValue);
	XBOOL get_AllowEvents() const;

	void set_ExpandTemplates(XBOOL bExpandTemplates);
	XBOOL get_ExpandTemplates() const;

	void set_NameScope(class xref_ptr<INameScope> spValue);
	class xref_ptr<INameScope> get_NameScope();

	void set_BaseUri(class xref_ptr<IPALUri> spBaseUri);
	class xref_ptr<IPALUri> get_BaseUri();

	void set_XamlResourceUri(class xref_ptr<IPALUri> spXamlResourceUri);
	class xref_ptr<IPALUri> get_XamlResourceUri();



};



